perm filename LS2V4P.SAI[CRE,BGB] blob
sn#101518 filedate 1974-05-31 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "LS2V4P"
C00003 00003 α LANDMARK POINTS POINTS
C00004 00004 α PERCEIVED ANGLES AT EACH OF TWO CAMERAS
C00005 00005 PHIPSI(QANG[1,1],QANG[4,1],QANG[2,1])
C00007 00006 PHIPSI(QANG[1,1],QANG[5,1],QANG[3,1])
C00008 00007 PHIPSI(QANG[1,2],QANG[4,2],QANG[2,2])
C00009 00008 PHIPSI(QANG[1,2],QANG[5,2],QANG[3,2])
C00010 ENDMK
C⊗;
BEGIN "LS2V4P"
REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
REQUIRE "DPYIII[SYS,BGB]" SOURCE_FILE;
SAFE INTEGER ARRAY DPYBUF[0:1000];
REAL ARRAY XWC,YWC,ZWC[1:8];
REAL ARRAY CX,CY,CZ[1:2];
REAL ARRAY QCOS[1:6,1:2];
REAL ARRAY QSIN[1:6,1:2];
REAL ARRAY QANG[1:6,1:2];
ITG I,J,K,L;
REAL SCALE;
REAL S1,S2,R1,R2,W1,W2,A1,A2;
REAL PHI,PSI;
SUBR PHIPSI (REAL A,B,C);
BEGIN "PHIPSI"
REAL RAD;
RAD ← SQRT(COS(C)↑2 - 2*COS(A)*COS(B)*COS(C) + COS(B)↑2);
PHI ← ACOS(SIN(A)*COS(B)/RAD);
PSI ← ACOS(RAD/SIN(A));
END "PHIPSI";
α LANDMARK POINTS POINTS;
XWC[1]←-5; YWC[1]←+0.5; ZWC[1]←0;
XWC[2]←-5; YWC[2]←-0.5; ZWC[2]←0;
XWC[3]←-6; YWC[3]←+0.6; ZWC[3]←1;
XWC[4]←-7; YWC[4]←-0.4; ZWC[4]←2.3;
α CAMERA LOCII (TO BE FOUND);
CX[1]←7; CY[1]← 2.0; CZ[1]← 0.0;
CX[2]←2; CY[2]←-2.3; CZ[2]←-1.5;
XWC[5]←CX[1]; YWC[5]←CY[1];
XWC[6]←CX[2]; YWC[6]←CY[2];
α PERCEIVED ANGLES AT EACH OF TWO CAMERAS;
FOR L←1,2 DO
BEGIN K←0;
FOR I←1 THRU 3 DO
FOR J←I+1 THRU 4 DO
QCOS[K←K+1,L] ←
((XWC[I]-CX[L])*(XWC[J]-CX[L])
+(YWC[I]-CY[L])*(YWC[J]-CY[L])
+(ZWC[I]-CZ[L])*(ZWC[J]-CZ[L])) /
(SQRT((XWC[I]-CX[L])↑2+(YWC[I]-CY[L])↑2+(ZWC[I]-CZ[L])↑2)*
SQRT((XWC[J]-CX[L])↑2+(YWC[J]-CY[L])↑2+(ZWC[J]-CZ[L])↑2));
END;
FOR L←1,2 DO
FOR I←1 THRU 6 DO
⊂ QSIN[I,L] ← SQRT(1-QCOS[I,L]↑2);
QANG[I,L] ← ACOS(QCOS[I,L]);⊃;
A1 ← QANG[1,1];
A2 ← QANG[1,2];
R1 ← 0.5/QSIN[1,1];
R2 ← 0.5/QSIN[1,2];
S1 ← R1*QCOS[1,1];
S2 ← R2*QCOS[1,2];
PHIPSI(QANG[1,1],QANG[4,1],QANG[2,1]);
PHI ← PHI - A1/2;
SCALE ← 35;
DPYSET(DPYBUF);
AIVECT(0,30);AVECT(0,0);
AVECT(350,0);AVECT(0,0);
FOR I←1 THRU 10 DO
⊂ AVECT(I*35,0);AVECT(I*35,20);AVECT(I*35,0);⊃;
DPYOUT(0);
BEGIN
REAL DW,DX,DY,DZ,XX,ZZ,KK,W,W0,XXOLD;
DX ← -COS(PHI);
DY ← SIN(PHI);
DZ ← COS(PSI);
DPYSET(DPYBUF);
AIVECT(0,0);
XXOLD←0;
DW ←(2*π-A1)/21;
FOR W ← A1-π STEP DW UNTIL π-A1 DO
BEGIN
KK ← -(R1*SIN(W))/(DY*COS(W)+DX*SIN(W));
ZZ ← KK*DZ;
XXOLD←XX;
XX ← R1*COS(W) + KK*(DX*COS(W) - DY*SIN(W)) + S1;
IF XX*XXOLD≤0 THEN
AIVECT(XX*SCALE,(ZZ-6)*SCALE);
AVECT(XX*SCALE,(ZZ-6)*SCALE);
END;
DPYOUT(1);
END;
PHIPSI(QANG[1,1],QANG[5,1],QANG[3,1]);
PHI ← PHI - A1/2;
SCALE ← 35;
BEGIN
REAL DW,DX,DY,DZ,XX,ZZ,KK,W,W0,XXOLD;
DX ← -COS(PHI);
DY ← SIN(PHI);
DZ ← COS(PSI);
DPYSET(DPYBUF);
AIVECT(0,0);
XXOLD←0;
DW ←(2*π-A1)/21;
FOR W ← A1-π STEP DW UNTIL π-A1 DO
BEGIN
KK ← -(R1*SIN(W))/(DY*COS(W)+DX*SIN(W));
ZZ ← KK*DZ;
XXOLD←XX;
XX ← R1*COS(W) + KK*(DX*COS(W) - DY*SIN(W)) + S1;
IF XX*XXOLD≤0 THEN
AIVECT(XX*SCALE,(ZZ-6)*SCALE);
AVECT(XX*SCALE,(ZZ-6)*SCALE);
END;
DPYOUT(2);
END;
PHIPSI(QANG[1,2],QANG[4,2],QANG[2,2]);
PHI ← PHI - A2/2;
SCALE ← 35;
BEGIN
REAL DW,DX,DY,DZ,XX,ZZ,KK,W,W0,XXOLD;
DX ← -COS(PHI);
DY ← SIN(PHI);
DZ ← COS(PSI);
DPYSET(DPYBUF);
AIVECT(0,0);
XXOLD←0;
DW ←(2*π-A2)/21;
FOR W ← A2-π STEP DW UNTIL π-A2 DO
BEGIN
KK ← -(R2*SIN(W))/(DY*COS(W)+DX*SIN(W));
ZZ ← KK*DZ;
XXOLD←XX;
XX ← R2*COS(W) + KK*(DX*COS(W) - DY*SIN(W)) + S2;
IF XX*XXOLD≤0 THEN
AIVECT(XX*SCALE,(ZZ-6)*SCALE);
AVECT(XX*SCALE,(ZZ-6)*SCALE);
END;
DPYOUT(3);
END;
PHIPSI(QANG[1,2],QANG[5,2],QANG[3,2]);
PHI ← PHI - A2/2;
SCALE ← 35;
BEGIN
REAL DW,DX,DY,DZ,XX,ZZ,KK,W,W0,XXOLD;
DX ← -COS(PHI);
DY ← SIN(PHI);
DZ ← COS(PSI);
DPYSET(DPYBUF);
AIVECT(0,0);
XXOLD←0;
DW ←(2*π-A2)/21;
FOR W ← A2-π STEP DW UNTIL π-A2 DO
BEGIN
KK ← -(R2*SIN(W))/(DY*COS(W)+DX*SIN(W));
ZZ ← KK*DZ;
XXOLD←XX;
XX ← R2*COS(W) + KK*(DX*COS(W) - DY*SIN(W)) +S2;
IF XX*XXOLD≤0 THEN
AIVECT(XX*SCALE,(ZZ-6)*SCALE);
AVECT(XX*SCALE,(ZZ-6)*SCALE);
END;
DPYOUT(4);
END;
WHILE TRUE DO INCHRW;
END;